home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
gnu
/
gcctest
/
tests05.zoo
/
tscanf.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-03-28
|
3KB
|
93 lines
/*
* scanf regression test
*
* usage: tscanf < tscanf.in
*
* please add to this
*
* ++jrb bammi@cadence.com
* with parts from glibc
*/
#include <stdio.h>
#if __STDC__
# include <stddef.h>
# ifndef EXIT_FAILURE
# include <stdlib.h> /* HP strikes again! */
# endif
#else
# define EXIT_FAILURE (1) /* failure return value for exit() */
# define EXIT_SUCCESS (0) /* success return value for exit() */
#endif
int main()
{
int i, n;
float x;
char name[50];
int exit_val = EXIT_SUCCESS;
/* input: 25 54.32E-1 thompson */
/* output: n = 3 i = 25 x = 5.432000 name = :thompson: */
n = scanf("%d%f%s", &i, &x, name);
printf("Expect:\tn = 3 i = 25 x = 5.432000 name = :thompson:\n");
printf("Got:\tn = %d i = %d x = %f name = :%s:\n\n", n, i, x, name);
if(n != 3) exit_val |= EXIT_FAILURE;
/* input: 56789 0123 56a72 */
/* output: n = 3 i = 56 x = 789.000000 name = :56: */
/* a72 left over */
n = scanf("%2d%f%*d %[0-9]", &i, &x, name);
printf("Expect:\tn = 3 i = 56 x = 789.000000 name = :56:\n");
printf("Got:\tn = %d i = %d x = %f name = :%s:\n\n", n, i, x, name);
if(n != 3) exit_val |= EXIT_FAILURE;
/* output: n = 1 name = :a72: */
n = scanf("%s", name);
printf("Expect:\tn = 1 name = :a72:\n");
printf("Got:\tn = %d name = :%s:\n\n", n, name);
if(n != 1) exit_val |= EXIT_FAILURE;
/* input: 56789 0123 56a72 */
/* output: n = 3 i = 56 x = 789.000000 name = :56: */
/* 'a72' left over */
n = scanf("%2d%f%*d %[0123456789]", &i, &x, name);
printf("Expect:\tn = 3 i = 56 x = 789.000000 name = :56:\n");
printf("Got:\tn = %d i = %d x = %f name = :%s:\n\n", n, i, x, name);
if(n != 3) exit_val |= EXIT_FAILURE;
/* output: n = 1 name = :a72: */
n = scanf("%s", name);
printf("Expect:\tn = 1 name = :a72:\n");
printf("Got:\tn = %d name = :%s:\n\n", n, name);
if(n != 1) exit_val |= EXIT_FAILURE;
/* input: 2 quarts of oil
10.0LBS of fertilizer
100ergs of energy
output:
count = 3, quant = 2.000000, item = oil, units = quarts
count = 3, quant = 10.000000, item = fertilizer, units = LBS
count = 3, quant = 100.000000, item = energy, units = rgs
count = -1, quant = 0.000000, item = , units =
*/
printf("Expect:\n\tcount = 3, quant = 2.000000, item = oil, units = quarts\n");
printf("\tcount = 3, quant = 10.000000, item = fertilizer, units = LBS\n");
printf("\tcount = 3, quant = 100.000000, item = energy, units = rgs\n");
printf("\tcount = -1, quant = 0.000000, item = , units = \n");
printf("Got:\n");
while (!feof (stdin) && !ferror (stdin))
{
float quant = 0.0;
char units[21], item[21];
units[0] = item[0] = '\0';
n = fscanf (stdin, "%f%20s of %20s", &quant, units, item);
(void) fscanf (stdin, "%*[^\n]");
printf ("\tcount = %d, quant = %f, item = %.21s, units = %.21s\n",
n, quant, item, units);
}
if(n != EOF) exit_val |= EXIT_FAILURE;
return exit_val;
}